Parte A

  • A base de dados escolhida foi “NASA Astronauts, do kaggle 1959-Present”. É a mesma base que a Mariana já tinha trabalhado em exercícios anteriores. Optamos por trabalhar com essa base pois achamos o assunto muito interessante e já tinhamos familiaridade com os dados.

    Esse conjunto de dados foi publicado pela ‘National Aeronautics and Space Administration’ como “Astronaut Fact Book” (edição de abril de 2013). Os nomes das missões dos astronautas ativos e as estatísticas de voo foram atualizados no site da NASA. Pode ser acessado em: https://www.kaggle.com/datasets/nasa/astronaut-yearbook.

  • A pergunta a ser respondida a partir dos dados é: “COMO SÃO OS ASTRONAUTAS?”.

    Quais são as características mais recorrentes em astronautas da Nasa?

    Questões como: Quanto tempo a maioria dos astronautas passou no espaço? Qual o curso que a maioria dos astronautas se formou? Houveram mais astronautas civis ou que serviram nas forças armadas? Qual a proporoção de astronautas mulheres para homens?

    Esses e outros questionamentos serão respondidos pelo gráfico que representa os dados sobre os Astronautas que fizeram parte da equipe da Nasa.

  • Referência visual:

    Durante a pesquisa, foi encontrada uma visualição muito interessante sobre astronautas que nos chamou muito a atenção. Essa, nos serviu como refência e inspiração para a produção de nossa peça gráfica.

    A referência pode ser encontrada no site: https://www.behance.net/gallery/86241381/Data-Visualisation-What-it-takes-to-go-to-space?tracking_source=search_projects_recommended%7Cdata%20journalism%20%26

  • Outras inspirações:

    https://www.reddit.com/r/DataArt/

    https://www.reddit.com/r/DataArt/comments/10n0w11/oc_ukraine_aid_packages_visualized/

    A ideia inicial era seguir a mesma linha e fazer um gráfico Sankey parecido, adicionando algumas alterações que julgamos necessárias, adaptando alguns pontos e adicionando elementos para compor a ideia.

Parte B

if(!require(utf8)) install.packages("utf8") 
library(utf8)
Sys.setlocale("LC_ALL", "pt_br.utf-8") 
## [1] "LC_COLLATE=pt_br.utf-8;LC_CTYPE=pt_br.utf-8;LC_MONETARY=pt_br.utf-8;LC_NUMERIC=C;LC_TIME=pt_br.utf-8"
if(!require(tidyverse)) install.packages("tidyverse")
if(!require(ggthemes)) install.packages("ggthemes")
if(!require(ggplot2)) install.packages("ggplot2")
if(!require(tidyverse)) install.packages("tidyverse")
if(!require(dplyr)) install.packages("dplyr")
if(!require(ggsankey)) install.packages("ggsankey")
if(!require(stringr)) install.packages("stringr")

if(!require(remotes)) install.packages("remotes")
 remotes::install_github("davidsjoberg/ggsankey")
library(dplyr)
library(ggplot2)
library(ggsankey)
library(stringr)

Manipulação da base:

Para a produção do gráfico tivemos um grande problema com algumas colunas de dados, pela maneira como as informações estavam dispostas. Por isso tivemos que manipular um pouco, de maneira a arrumar e deixar os dados próprios para o gráfico Sankey.

  • Lendo a base de dados:
astronauts <- read.csv("astronauts.csv")
  • Adicionando a coluna de países:

Primeiramente, uma das informções presentes nos dados era a cidade de nascimento dos astronautas. Para utilizar esse dado, criamos uma nova coluna chamada ‘Country’, apenas os países de nascimento, para diminuir o número de variáveis.

states<-c("AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","Richfield. UT","DC")
birth.place1<-gsub('(.*, )|(\\*. )', '', astronauts$Birth.Place)
astronauts$Country <-birth.place1
astronauts$Country[birth.place1 %in% states]<-"USA"
astronauts$Country <- as.factor(astronauts$Country)
  • Eliminando dados vazios na coluna military rank:

O próximo feito foi preencher os dados vázios da variável que representava o cargo militar dos astronautas, para isso colocamos como ‘civil’, os que não tinham cargo militar.

astronauts$Military.Rank[astronauts$Military.Rank==""]="Civil"
  • Reproduzindo os valores em graduate para undergraduate

Alguns astronautas estavam preenchidos na coluna de pós-graduação, mas não estavam preenchidos na coluna de gradução. Por isso, completamos esse dados faltante como o mesmo curso da pós-graduação, porque se tem pós, tem que ter graduação.

astronauts$Undergraduate.Major[astronauts$Undergraduate.Major==""] = astronauts$Graduate.Major[astronauts$Undergraduate.Major==""]
  • Dividindo a coluna de universidades e colocando só o primeiro valor na base:

Para diminuir o número de variáveis no campo de formação dos astronautas, nós criamos uma nova coluna chamada ‘study’, onde preenchemos apenas com o primeiro curso.

# Separando em colunas as formações distintas
dfmajor <- str_split_fixed(astronauts$Graduate.Major, ';',2)
dfmajor <- data.frame(dfmajor)
# Criando a nova coluna
astronauts$Study <- c(dfmajor$X1)
  • Preenchendo os dados vazios de ‘Study’

E as células que estavam vazias na graduação, colocamos ‘no graduation’.

astronauts$Study[astronauts$Study==""]="No graduation"

Exibindo as formações presentes na coluna:

sort(unique(astronauts$Study))
##  [1] "Aeronautical & Astronautical Engineering"
##  [2] "Aeronautical Engineering"                
##  [3] "Aeronautical Engineering Systems"        
##  [4] "Aeronautical Science"                    
##  [5] "Aeronautical Systems"                    
##  [6] "Aeronautics"                             
##  [7] "Aeronautics & Astronautics"              
##  [8] "Aerospace Engineering"                   
##  [9] "Aerospace Engineering Sciences"          
## [10] "Aerospace Science"                       
## [11] "Applied Mathematics"                     
## [12] "Applied Physics"                         
## [13] "Applied Plasma Physics"                  
## [14] "Applied Science"                         
## [15] "Astrogeophysics"                         
## [16] "Astronautical & Aeronautical Engineering"
## [17] "Astronautical Engineering"               
## [18] "Astronautics"                            
## [19] "Astronomy"                               
## [20] "Astronomy & Astrophysics"                
## [21] "Atmospheric Physics"                     
## [22] "Aviation Systems"                        
## [23] "Biochemistry"                            
## [24] "Bioengineering"                          
## [25] "Biometeorology"                          
## [26] "Business Administration"                 
## [27] "Business Management"                     
## [28] "Cancer Biology"                          
## [29] "Ceramic Engineering"                     
## [30] "Chemical Engineering"                    
## [31] "Chemistry"                               
## [32] "Computer Science"                        
## [33] "Computer Systems"                        
## [34] "Earth & Planetary Sciences"              
## [35] "Earth Sciences"                          
## [36] "Education"                               
## [37] "Electrical & Computer Engineering"       
## [38] "Electrical Engineering"                  
## [39] "Electronics Engineering"                 
## [40] "Engineering"                             
## [41] "Engineering Management"                  
## [42] "Engineering Mechanics"                   
## [43] "Engineering Physics"                     
## [44] "Engineering Science"                     
## [45] "Environmental Science"                   
## [46] "Flight Structures Engineering"           
## [47] "Geology"                                 
## [48] "Geophysics"                              
## [49] "Geosciences"                             
## [50] "Hydraulic Engineering"                   
## [51] "Industrial Engineering"                  
## [52] "Information Systems"                     
## [53] "International Relations"                 
## [54] "Laboratory Astrophysics"                 
## [55] "Law"                                     
## [56] "Materials Science"                       
## [57] "Materials Science Engineering"           
## [58] "Mathematics"                             
## [59] "Mechanical  Engineering"                 
## [60] "Mechanical & Aerospace Engineering"      
## [61] "Mechanical Engineering"                  
## [62] "Medicine"                                
## [63] "Metallurgical Engineering"               
## [64] "Meteorology"                             
## [65] "Microbial Ecology"                       
## [66] "No graduation"                           
## [67] "Nuclear Engineering"                     
## [68] "Nuclear Physics"                         
## [69] "Ocean Engineering"                       
## [70] "Oceanography"                            
## [71] "Operations Research"                     
## [72] "Physical Chemistry"                      
## [73] "Physical Science"                        
## [74] "Physics"                                 
## [75] "Physiology"                              
## [76] "Planetary Science"                       
## [77] "Polymer Science & Engineering"           
## [78] "Public Administration"                   
## [79] "Public Health"                           
## [80] "Safety Engineering"                      
## [81] "Science & Technology Administration"     
## [82] "Solar Physics"                           
## [83] "Solid State Physics"                     
## [84] "Space Physics"                           
## [85] "Space Technology"                        
## [86] "Systems Engineering"                     
## [87] "Systems Management"                      
## [88] "Technology & Policy"                     
## [89] "Veterinary Medicine"
  • Renomeando os crusos:

POr último, renomeamos os curso de maneira a deixar apenas a área geral de estudo, para diminuir o número de correspondências no gráfico. Por exemplo, os vários ramos da física foram resumidos apenas em física.

astronauts$Study[astronauts$Study=="Aeronautical & Astronautical Engineering"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Engineering Systems"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical System"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Systems"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautics & Astronautics"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Engineering"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Science"]="Aeronautics"
astronauts$Study[astronauts$Study=="Applied Plasma Physics"]="Physics"
astronauts$Study[astronauts$Study=="Atmospheric Physics"]="Physics"
astronauts$Study[astronauts$Study=="Engineering Physics"]="Physics"
astronauts$Study[astronauts$Study=="Physical Science"]="Physics"
astronauts$Study[astronauts$Study=="Solid State Physics"]="Physics"
astronauts$Study[astronauts$Study=="Applied Physics"]="Physics"
astronauts$Study[astronauts$Study=="Solar Physics"]="Physics"
astronauts$Study[astronauts$Study=="Physical Chemistry"]="Physics"
astronauts$Study[astronauts$Study=="Space Physics"]="Physics"
astronauts$Study[astronauts$Study=="Nuclear Physics"]="Physics"
astronauts$Study[astronauts$Study=="Mechanical  Engineering"]="Mechanical Engineering"
astronauts$Study[astronauts$Study=="Engineering Mechanics"]="Mechanical Engineering"
astronauts$Study[astronauts$Study=="Earth & Planetary Sciences"]="Earth Sciences"
astronauts$Study[astronauts$Study=="Planetary Science"]="Earth Sciences"
astronauts$Study[astronauts$Study=="Applied Mathematics"]="Mathematics"
astronauts$Study[astronauts$Study=="Astronomy & Astrophysics"]="Astronomy"
astronauts$Study[astronauts$Study=="Aerospace Engineering Sciences"]="Aerospace"
astronauts$Study[astronauts$Study=="Aerospace Engineering"]="Aerospace"
astronauts$Study[astronauts$Study=="Mechanical & Aerospace Engineering"]="Aerospace"
astronauts$Study[astronauts$Study=="Astronomy & Astrophysics"]="Aerospace"
astronauts$Study[astronauts$Study=="Aerospace Science"]="Aerospace"
astronauts$Study[astronauts$Study=="Astronautical & Aeronautical Engineering"]="Astronautics"
astronauts$Study[astronauts$Study=="Astronautical Engineering"]="Astronautics"
astronauts$Study[astronauts$Study=="Electrical & Computer Engineering"]="Electrical Engineering"
astronauts$Study[astronauts$Study=="Computer Systems"]="Computer Science"
astronauts$Study[astronauts$Study=="Biometeorology"]="Meteorology"
astronauts$Study[astronauts$Study=="Technology & Policy"]="Technology"
astronauts$Study[astronauts$Study=="Space Technology"]="Technology"
astronauts$Study[astronauts$Study=="Science & Technology Administration"]="Administration"
astronauts$Study[astronauts$Study=="Public Administration"]="Administration"
astronauts$Study[astronauts$Study=="Systems Engineering"]="Systems Management"
astronauts$Study[astronauts$Study=="Information Systems"]="Systems Management"
astronauts$Study[astronauts$Study=="Business Administration"]="Business"
astronauts$Study[astronauts$Study=="Business Management"]="Business"
astronauts$Study[astronauts$Study=="Bioengineering"]="Biology"
astronauts$Study[astronauts$Study=="Cancer Biology"]="Biology"
astronauts$Study[astronauts$Study=="Biochemistry"]="Biology"
astronauts$Study[astronauts$Study=="Materials Science Engineering"]="Applied Science"
astronauts$Study[astronauts$Study=="Engineering Science"]="Applied Science"
astronauts$Study[astronauts$Study=="Materials Science"]="Applied Science"
astronauts$Study[astronauts$Study=="Environmental Science"]="Applied Science"
astronauts$Study[astronauts$Study=="Polymer Science & Engineering"]="Applied Science"
astronauts$Study[astronauts$Study=="Engineering Management"]="Engineering"
astronauts$Study[astronauts$Study=="Ocean Engineering"]="Oceanography"
astronauts$Study[astronauts$Study=="Chemical Engineering"]="Chemistry"

Medidas de resumo:

summary(astronauts)
##      Name                Year          Group          Status         
##  Length:357         Min.   :1959   Min.   : 1.00   Length:357        
##  Class :character   1st Qu.:1978   1st Qu.: 8.00   Class :character  
##  Mode  :character   Median :1987   Median :12.00   Mode  :character  
##                     Mean   :1985   Mean   :11.41                     
##                     3rd Qu.:1996   3rd Qu.:16.00                     
##                     Max.   :2009   Max.   :20.00                     
##                     NA's   :27     NA's   :27                        
##   Birth.Date        Birth.Place           Gender           Alma.Mater       
##  Length:357         Length:357         Length:357         Length:357        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  Undergraduate.Major Graduate.Major     Military.Rank      Military.Branch   
##  Length:357          Length:357         Length:357         Length:357        
##  Class :character    Class :character   Class :character   Class :character  
##  Mode  :character    Mode  :character   Mode  :character   Mode  :character  
##                                                                              
##                                                                              
##                                                                              
##                                                                              
##  Space.Flights   Space.Flight..hr.  Space.Walks     Space.Walks..hr.
##  Min.   :0.000   Min.   :    0     Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:1.000   1st Qu.:  289     1st Qu.: 0.000   1st Qu.: 0.000  
##  Median :2.000   Median :  590     Median : 0.000   Median : 0.000  
##  Mean   :2.364   Mean   : 1249     Mean   : 1.246   Mean   : 7.707  
##  3rd Qu.:3.000   3rd Qu.: 1045     3rd Qu.: 2.000   3rd Qu.:12.000  
##  Max.   :7.000   Max.   :12818     Max.   :10.000   Max.   :67.000  
##                                                                     
##    Missions          Death.Date        Death.Mission           Country   
##  Length:357         Length:357         Length:357         USA      :335  
##  Class :character   Class :character   Class :character   England  :  4  
##  Mode  :character   Mode  :character   Mode  :character   Australia:  3  
##                                                           China    :  2  
##                                                           Argentina:  1  
##                                                           Canada   :  1  
##                                                           (Other)  : 11  
##     Study          
##  Length:357        
##  Class :character  
##  Mode  :character  
##                    
##                    
##                    
## 
  • Variável ‘Country’ (Categórica)
graf <- ggplot(data= astronauts,
                mapping = aes(x=Country)) + geom_bar(aes(fill = "red")) + coord_flip() + guides(fill = FALSE) 

graf

  • Variável ‘Military Rank’ (Categórica ordinal)
graf <- ggplot(data= astronauts,
                mapping = aes(x= Military.Rank)) + geom_bar(aes(fill = Gender)) + coord_flip()

graf

  • Variável ‘Space Flights’ (quantitativa discreta)
mean(astronauts$Space.Flights)
## [1] 2.364146
min(astronauts$Space.Flights)
## [1] 0
max(astronauts$Space.Flights)
## [1] 7
median(astronauts$Space.Flights)
## [1] 2
quantile(astronauts$Space.Flights)
##   0%  25%  50%  75% 100% 
##    0    1    2    3    7
var(astronauts$Space.Flights)
## [1] 2.041183
sd(astronauts$Space.Flights)
## [1] 1.4287
graf <- ggplot(data= astronauts,
                mapping = aes(x= Space.Flights)) + geom_bar(aes(fill= Country))

graf

  • Variável ‘Study’
graf <- ggplot(data= astronauts,
                mapping = aes(x= Study)) + geom_bar(aes(fill = Country)) + coord_flip()

graf

graf <- ggplot(data= astronauts,
                mapping = aes(x= Study)) + geom_bar(aes(fill = Gender, angle=90)) +  coord_flip()

graf

  • Space Flights X Gender
graf <- ggplot(data= astronauts,
                mapping = aes(x= Gender)) + geom_bar(aes( fill = Gender))

graf

graf <- ggplot(data= astronauts,
                mapping = aes(x= Gender)) + geom_bar(aes( fill = Country))

graf

  • Space Flights x Country
graf <- ggplot(data= astronauts,
                mapping = aes(x= Space.Flights, y = Country, color = Gender)) + geom_point() + geom_jitter(position = position_jitter(width = 0.5))

graf

  • Military Rank x Country
graf <- ggplot(data= astronauts,
                mapping = aes(x= Military.Rank, y = Country, color = Country)) + geom_point() +
  theme(axis.text.x = element_text(size = 10, angle = 90)) + geom_jitter(position = position_jitter(width = 0.5))

graf

Exemplo de ggsankey

s1 <- sample(x= c("Single",
                  "Married", 
                  "Married with kids", 
                  "Married Without kids"), 
              size = 100, 
              replace=TRUE)

s2 <- sample(x= c("Male", 
                  "Female"), 
             size = 100, 
             replace=TRUE)

s3 <- sample(x= c("Happy", 
                  "Not Happy"), 
             size = 100, 
             replace=TRUE)

d <- data.frame(cbind(s1,s2,s3))
names(d) <- c('Relationship', 
              'Gender', 
              'Outcome')
df <- d%>%
  make_long(Relationship, 
            Gender, 
            Outcome)
pl <- ggplot(df, aes(x = x,                        
                     next_x = next_x,                                     
                     node = node,
                     next_node = next_node,        
                     fill = factor(node)))
                     
pl <- pl +geom_sankey(flow.alpha = 0.5,          
                      node.color = "black",             
                      show.legend = TRUE)       

pl

Parte C

  • O público alvo é o público em geral interessado em curiosidades científicas e que queira entender melhor como é a maioria dos astronautas da Nasa.

  • A peça gráfica foi feita com o objetivo de ser criativa e representar o contexto dos dados na forma do gráfico. Para isso utilizamos do gráfico Sankey, com o intuito de referenciar um foguete espacial, o que também explica o uso das cores e elementos de contexto ao redor.

  • Para a produção da peça gráfica, fizemos uso do R para a confecção do gráfico (ggplot2, ggsankey) e manipulação dos dados(dplyr, stringr), juntamente com o excel para auxiliar o entendimento e visualização da tabela e, por fim, usamos o Canva para adição dos demais elementos.

  • Durante o processo encontramos um grande desafio, pela maneira como estava disposta as duas colunas sobre as formações dos astronautas. Essa variável apresentava todos os cursos que cada astronauta possui, separada por ponto e vírgula, o que impossibilitava plotar o gráfico que queriamos diretamente com essa informação. No processo tivemos que arrumar isso, como está descrito passo a passo na parte B, o que gerou grande aprendizado, além do conhecimento de um novo gráfico diferente e como produzi-lo com as ferramentas do R.

Parte D

  • Produção do gráfico final para a peça gráfica.
df <- astronauts %>% make_long(Gender,Space.Flights, Military.Rank, Country, Study)
cbPalette <- c("#4038C9", "#657CFF",  "#71BBCC", "#DB5C18")

pl <- ggplot(df, aes(x = x,
               next_x = next_x,
               node = node,
               next_node = next_node,
               fill = next_x,
               label = node)) +
  geom_sankey(flow.alpha = 0.5, show.legend = FALSE, node.alpha = 0.7) +
  theme_sankey(base_size = 150) +
  theme(legend.position = "none") +
  geom_sankey_text(size = 20, hjust = 0,angle = 15, color = "white", position = position_nudge(x = 0.1)) +
  scale_fill_manual(values = cbPalette) +
  theme(panel.background = element_rect(fill = "#080833"))
pl